In certain systems, multiple processors or partitions may be used to accomplish various functions. Using the multiple processor or partitions as shared processing resources in this manner can reduce cost of a system. For example, a first process can use a processor when a second process is not using the processor. Thus, only one processor is needed to accomplish multiple functions.
However, in certain applications sharing processing resources can be problematic. To illustrate, in the example above, if the first process hangs (e.g., stops to wait for data, has an error, etc.), the second process may be locked out of the processor. If the second process is a safety system, this situation may be unacceptable. Standards and design principles have been established for some systems to provide protection against these problems. For example, in Integrated Modular Avionics (IMA) architectures that follow the Avionics Application Standard Software Interface (ARINC) 653 standard, one processor or partition is not allowed to block or wait for another processor or partition. Thus, certain methodologies for communication among processors or partitions may not be acceptable. For example, communication methodologies that use spin locks, semaphores, set and test instructions, or other similar methods may be unacceptable since they may cause one partition to block or wait until a resource is free.